/** FASSIT (Forms of Selective Attention in Intelligent Transportation Systems)
 * Computational Creativity and Digital Media
 * Cognitive and Media Systems Group
 * Centre for Informatics and Systems of the University of Coimbra (CISUC)
 *
 * Copyright (c) 2010-2013 University of Coimbra, Portugal
 * All rights reserved.
 */

package agent.Knowledge;

import java.util.HashMap;

import poi.Info.POI;
import poi.Info.POIwithSurprise;
import poi.Surprise.Surprise;
import poi.Surprise.SurpriseDaysOff;
import poi.Surprise.SurprisePrice;
import poi.Surprise.SurpriseSchedule;
import poi.SurpriseCalculator.SurpriseCalculatorForPOI;
import agent.Context.Context;
import agent.DBManager.AgentDBManager;
import agent.Metrics.Surprise.PastSurpriseValues;

/**
 * This class has the high level methods, allowing the agent to retrieve the
 * agent's past knowledge about Surprise.
 * 
 * @author Hernani Costa
 * @version 0.2 date: 2/12/2012
 */
public class AgentPastKnowledgeAboutSurprise {
	private PastSurpriseValues agentPastSurpriseValues;
	private AgentDBManager agentDBManager;
	private Surprise surprise;

	/**
	 * ------------------------------------------------------------------------
	 * Constructor class
	 * ------------------------------------------------------------------------
	 * 
	 * @param context
	 *            - the current Agent's Context
	 */
	public AgentPastKnowledgeAboutSurprise(Context context) {
		agentDBManager = new AgentDBManager();
		agentPastSurpriseValues = agentDBManager
				.getSurpriseValuesForGoal(context);
		
		surprise = new Surprise();
		surprise.setSurpriseDayOff(agentPastSurpriseValues.getSurpriseDayOff());
		surprise.setSurprisePrice(agentPastSurpriseValues.getSurprisePrice());
		surprise.setSurpriseSchedule(agentPastSurpriseValues.getSurpriseSchedule());
	}

	// ------------------------------------------------------------------------
	// ------------------------GETs and SETs-----------------------------------
	// ------------------------------------------------------------------------

	public Surprise getAgentPastKnowledgeAboutSurprise(){
		return surprise;
	}
	
	
	/**
	 * ------------------------------------------------------------------------
	 * Retrieves the Agent's past knowledge about Surprise, for the parameter
	 * DayOff
	 * ------------------------------------------------------------------------
	 * 
	 * @return Agent's past knowledge about Surprise, for the parameter DayOff
	 */
//	public SurpriseDaysOff getSurpriseDayOff() {
//		return surpriseDayOff;
//	}
//
//	private void setSurpriseDayOff(SurpriseDaysOff surpriseDayOff) {
//		this.surpriseDayOff = surpriseDayOff;
//	}

	/**
	 * ------------------------------------------------------------------------
	 * Retrieves the Agent's past knowledge about Surprise, for the parameter
	 * Price
	 * ------------------------------------------------------------------------
	 * 
	 * @return Agent's past knowledge about Surprise, for the parameter Price
	 */
//	public SurprisePrice getSurprisePrice() {
//		return surprisePrice;
//	}
//
//	private void setSurprisePrice(SurprisePrice surprisePrice) {
//		this.surprisePrice = surprisePrice;
//	}

	/**
	 * ------------------------------------------------------------------------
	 * Retrieves the Agent's past knowledge about Surprise, for the parameter
	 * Schedule
	 * ------------------------------------------------------------------------
	 * 
	 * @return Agent's past knowledge about Surprise, for the parameter Schedule
	 */
//	public SurpriseSchedule getSurpriseSchedule() {
//		return surpriseSchedule;
//	}
//
//	private void setSurpriseSchedule(SurpriseSchedule surpriseSchedule) {
//		this.surpriseSchedule = surpriseSchedule;
//	}

}
